Če je pogoj izpolnjen, se izvede blok ukazov, ki so ustrezno zamaknjeni. Ko se
blok izvede se vrnemo ponovno na pogoj in ga preverimo. Če je ponovno izpolnjen
se blok ponovno izvede. Zanka se preneha izvajati, ko pogoj prvič ni izpolnjen.
Primeru, ko je pogoj vedno izpolnjen rečemo neskončna zanka (npr. while True:)
Z ukazom break znotraj bloka pri while delu izstopimo iz zanke, medtem ko z ukazom
continue znotraj while bloka izpustimo preostali del bloka in se takoj vrnemo na začetek
(preverimo pogoj). Zanka while pa ima
tudi else del. Ta se izvede v primeru, ko iz zanke ne izstopimo s pomočjo ukaza
break, vendar ni obvezen.
Želimo izpisati števila od 100 do 1 v padajočem vrstnem redu.
Zapišite program, ki to naredi s pomočjo zanke while..
Izpis:
100
99
98
...
1
Uradna rešitev
#
i = 100
while i > 0:
print(i)
i = i - 1
2. podnaloga
Sestavite funkcijo sestej(st), ki sešteje števila od 1 do st.
>>> sestej(3)
6
>>> sestej(5)
15
Uradna rešitev
def sestej(st):
'''Sešteje števila od 1 do st.'''
i = 1
v = 0
while i <= st:
v += i
i += 1
return v
3. podnaloga
V bobnu za loto imamo kroglice označene s številkami od $1$ do $10$ (vsaka številka
le enkrat). Napišite funkcijo zreb(n), ki izvede simulacijo n - tih naključnih žrebov in vrne
število izžrebanih $10$. Pomagajte si s knjižnico random.
Uradna rešitev
import random
def zreb(n):
"""Vrne število izžrebanih 10 v n poskusih."""
koliko10 = 0
i = 0
while i < n:
i += 1
izzrebana = int(random.randint(1, 10))
if izzrebana == 10:
koliko10 += 1
return koliko10
4. podnaloga
Napišite še funkcijo zreb2(), ki izvede simulacijo žrebanja in vrne
število žrebov preden prvič izžrebamo število $8$ (tistega žreba, ko
izžrebamo $8$ ne upoštevamo več). Če vmes izžrebamo število $1$,
naj funkcija vrne $-1$. Poskušajte čim več funkcije napisati znotraj ene while zanke.
Pomagaj si s knjižnico random in break ter else delom while zanke.
Uradna rešitev
import random
def zreb2():
'''vrne število žrebov do prve 8, če pa izžrebamo 1 vrne -1'''
koliko = 0
izzrebana = 0
while izzrebana != 1:
izzrebana = int(random.randint(1, 10))
if izzrebana != 8:
koliko += 1
else:
return koliko
else:
return -1